#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//void xw(int*p, int sz)
//{
//	int sum = 0;
//	int a = 0;
//
//	for (int i = 0; i < sz; i++)
//	{
//		sum ^= p[i];
//	}
//	for (int i = 0; i < sz; i++)
//	{
//		if (sum & 1 << i)
//		{
//			a =i;
//			break;
//		}
//	}	
//
//	int *b = 0;
//	int *c = 0;
//	for (int i = 0; i <= sz; i++)
//	{
//		if (sum & 1 << a)
//			*b ^= p[i];
//		else
//			*c ^= p[i];
//	}
//	printf("%d %d", *b, *c);
//
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,1,2,3,4,6 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	xw(arr, sz);
//	return 0;
//}
//int day(int *p,int a,int b)
//{
//	if ( ((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0)))
//	{
//		return p[0];
//	}
//	else return p[b];
//}
//int main()
//{
//	int arr[] = { 29,31,28,31,30,31,30,31,31,30,31,31 };
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int ret=day(arr,a,b);
//	printf("%d", ret);
//	return 0;
//}

//#include <stdio.h>
//int day(int* p, int a, int b)
//{
//	if (((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0)))
//	{
//		if (b == 2)
//		{
//			return p[b] + 1;
//		}
//	}
//	return p[b - 1];
//}
//int main()
//{
//	int arr[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//	int a = 0;
//	int b = 0;
//	int day = arr[b - 1];
//	while (scanf("%d %d", &a, &b) != EOF)
//	{
//		if (((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0)))
//		{
//			if (b == 2)
//			{
//				day += 1;
//			}
//		}
//		return arr[b - 1];
//		int ret = day(arr, a, b);
//		printf("%d", day);
//	}
//	return 0;
//}


int xw(int* p,int a,int b)
{
	int day = p[b-1]; 
	if (((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0)))
				{
					if (b == 2)
					{
						day += 1;
					}
				}
	return day;
}
int main()
{
	int a, b;
	while (scanf("%d %d", &a, &b) != EOF)
	{
		int arr[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
		int ret =xw(arr,a,b);
		printf("%d", ret);
	}
	return 0;

}